package com.yotouch.app.stake.hsf;

import com.yotouch.app.stake.model.Station;
import com.yotouch.app.stake.model.response.ResponseBase;
import com.yotouch.app.stake.model.response.ResponseInt;
import com.yotouch.app.stake.model.response.ResponseStation;
import com.yotouch.app.stake.model.response.ResponseStationList;

public interface StationService {

    /**
     * 根据站uuid查询站下所有的正常使用的桩 stakestatus=3
     * 并将超充、快充、慢充、直流、交流信息汇总到站属性中
     * 站对象中包含桩列表
     * @apiNote  e充电使用
     * @param uuid
     * @return
     */
    @Deprecated
    ResponseStation countStakes(String uuid) ;

    /**
     * 统计国网站(isthird)正常状态站 stationstatus =3 数量
     *
     * @return
     */
    ResponseInt sgccTotalCount() ;

    /**
     * 获取国网(isthird)正常状态站 stationstatus =3 列表
     *
     * @param offset
     * @param limit
     * @return
     */
    ResponseStationList sgccList(int offset, int limit) ;

    /**
     * 统计某状态下的所有公用站数量
     *
     * @param stationStatus 2 待投运,3 运行,8 维护,10 退运,11 停运
     */
    ResponseInt pueryTotaStatusCount(int stationStatus);

    /**
     * 获取某状态下的所有公用站列表
     *
     * @param offset
     * @param limit
     * @param stationStatus 2 待投运,3 运行,8 维护,10 退运,11 停运
     * @return
     */
    ResponseStationList pueryStatusList(int offset, int limit, int stationStatus) ;

    /**
     * 根据组织机构编码(provinceOrgCode or cityorgcode or partorgcode)获取所有本机构下的站以及下一级机构的站列表
     *
     * @param orgCode
     * @return
     */
    ResponseStationList listAllByOrg(String orgCode);

    /**
     * 根据组织机构编码(provinceOrgCode or cityorgcode or partorgcode)查询全部站列表
     * @param orgCode
     * @param offset
     * @param limit
     * @return
     */
    ResponseStationList listByOrg(String orgCode, int offset, int limit);

    /**
     * 根据组织机构编码(provinceOrgCode or cityorgcode or partorgcode)获取所有本机构下的站数
     * @param orgCode
     * @return
     */
    ResponseInt countByOrg(String orgCode);

    /**
     * 统计所有站数
     * @return
     */
    ResponseInt totalCount();

    /**
     * 统计所有站列表
     * @param offset
     * @param limit
     * @return
     */
    ResponseStationList list(int offset, int limit);

    /**
     * 根据省份行政编码(provincecode)统计该省的充电站数量
     * @param provinceCode
     * @return
     */
    ResponseInt countByProvince(String provinceCode);

    /**
     * 根据省份行政编码(provincecode)统计该省的充电站列表
     * @param provinceCode
     * @param offset
     * @param limit
     * @return
     */
    ResponseStationList listByProvince(String provinceCode, int offset, int limit);

    /**
     * 根据区域行政编码(districtCode)统计该区域内正常运⾏状态(stationstaus)的国⽹(isthird)充电站数量
     * @param districtCode
     * @return
     */
    ResponseInt countByDistrict(String districtCode);

    /**
     * 根据区域行政编码(districtCode)统计该区域内正常运⾏状态(stationstaus)的国⽹(isthird)充电站列表
     * @param districtCode
     * @param offset
     * @param limit
     * @return
     */
    ResponseStationList listByDistrict(String districtCode, int offset, int limit);


    /**
     * 根据uuid获取站信息
     * @param uuid
     * @return
     */
    ResponseStation get(String uuid);

    /**
     * 统计站下运营商桩数量
     * 废弃方法，后续不再维护
     * @param stationUuid
     * @return
     */
    @Deprecated
    ResponseStation countByOperator(String stationUuid);

    /**
     * 废弃方法，实现类不处理
     * @param station
     * @return
     */
    @Deprecated
    ResponseBase set(Station station);

    /**
     * 废弃方法，实现类不处理
     * @param uuid
     * @return
     */
    @Deprecated
    ResponseBase delete(String uuid);

    /**
     * 废弃方法，实现类不处理
     * @return
     */
    @Deprecated
    boolean initStationInRedis();
}
